home *** CD-ROM | disk | FTP | other *** search
/ Network Support Library / RoseWare - Network Support Library.iso / menu / mxmenu.exe / NOVELL.INC < prev    next >
Text File  |  1994-02-18  |  7KB  |  279 lines

  1. Comment
  2. ==========================================================
  3.  
  4. This include file exports definitions that create a Novell menu look and
  5. feel. This is one of several look and feel files that export the same
  6. procedures.
  7.  
  8. Useful Routines Exported:
  9.  
  10. LookSetup
  11.    Call this to initialize the screen. Set MenuTitle and StatusLineText
  12.    before calling this routine.
  13.  
  14. CornerStretchBox (Header,Col,Row)
  15.    Creates a window from the array Choices with the upper left corner at
  16.    Row/Col. LastKey is set to the letter that is chosen.
  17.  
  18. CenterStretchBox (Header,Col,Row)
  19.    Creates a window from the array Choices with the center at Row/Col.
  20.    if a 0 is passed for either the Row or Col then the center of the
  21.    screen is assumed. LastKey is set to the letter that is chosen.
  22.  
  23. Leave
  24.    Puts up an exit box.
  25.  
  26.  
  27. ==========================================================
  28. EndComment
  29.  
  30.  
  31. var
  32.   Choices
  33.   MenuTitle
  34.   StatusLineText
  35.   StatusWindow
  36.   HeightDifference
  37.   Greek = False
  38.  
  39. var
  40.   BackGroundFG
  41.   BackGroundBG
  42.   TitleBoxBorderFG
  43.   TitleBoxBG
  44.   TitleBoxInsideFG
  45.   ClockColorFG
  46.   StatusLineFG
  47.   StatusLineBG
  48.   MenuInsideFG
  49.   MenuBG
  50.   MenuHeaderFG
  51.   MenuBorderFG
  52.   MenuInactiveFG
  53.   MenuVertLinesFG
  54.   MenuInverseFG
  55.   MenuInverseBG
  56.   MenuCapColorFG
  57.   ConsoleInsideFG
  58.   GreekFG
  59.   GreekBG
  60.  
  61. ;------ This is where you set your favorite colors.
  62.  
  63. Procedure SetColors
  64.    if ColorScreen
  65.       BackGroundFG     = Grey
  66.       BackGroundBG     = Blue
  67.       TitleBoxBG       = Brown
  68.       TitleBoxBorderFG = White
  69.       TitleBoxInsideFG = Yellow
  70.       ClockColorFG     = Yellow
  71.       StatusLineFG     = Yellow
  72.       StatusLineBG     = Mag
  73.       MenuBG           = Blue
  74.       MenuInsideFG     = Yellow
  75.       MenuBorderFG     = Yellow
  76.       MenuInactiveFG   = LGreen
  77.       MenuHeaderFG     = LCyan
  78.       MenuVertLinesFG  = LGreen
  79.       MenuInverseFG    = White
  80.       MenuInverseBG    = Mag
  81.       MenuCapColorFG   = White
  82.       ConsoleInsideFG  = White
  83.       GreekFG          = Blue
  84.       GreekBG          = Green
  85.       BoxHeaderColor Yellow Green
  86.    else
  87.       BackGroundFG     = Grey
  88.       BackGroundBG     = Black
  89.       TitleBoxBG       = Grey
  90.       TitleBoxBorderFG = Black
  91.       TitleBoxInsideFG = Black
  92.       ClockColorFG     = Black
  93.       StatusLineFG     = Black
  94.       StatusLineBG     = Grey
  95.       MenuBG           = Black
  96.       MenuInsideFG     = Grey
  97.       MenuBorderFG     = Grey
  98.       MenuInactiveFG   = Grey
  99.       MenuHeaderFG     = White
  100.       MenuVertLinesFG  = White
  101.       MenuInverseFG    = Black
  102.       MenuInverseBG    = Grey
  103.       MenuCapColorFG   = White
  104.       ConsoleInsideFG  = Grey
  105.       GreekFG          = Black
  106.       GreekBG          = Grey
  107.       BoxHeaderColor Black Grey
  108.    endif
  109. EndProc
  110.  
  111. ;------ Sets up main window to Novell look.
  112.  
  113. Procedure LookSetup
  114.    if MenuInsideFG = 0 then SetColors
  115.    NoExit
  116.  
  117.    ;------ Clear the screen with a textured background
  118.  
  119.    if not Overlayed
  120.       TextColor BackGroundFG BackGroundBG
  121.       ClearScreen 176
  122.  
  123.       ;------ If Greek is true then draw greek columns
  124.  
  125.       if Greek then GreekColumns
  126.    endif
  127.  
  128.    ;------ Draw Status Line
  129.  
  130.    NoBoxBorder
  131.    InactiveBox NoBoxBorder
  132.    Explode Off
  133.    BoxInsideColor StatusLineFG StatusLineBG
  134.    DrawBox 1 ScreenHeight ScreenWidth 1
  135.    StatusWindow = CurrentWindow
  136.    WriteCenter(StatusLineText)
  137.  
  138.    if not Overlayed
  139.  
  140.       ;------ Draw the Title Box
  141.  
  142.       SingleLineBox
  143.       BoxInsideColor TitleBoxInsideFG TitleBoxBG
  144.       BoxBorderColor TitleBoxBorderFG TitleBoxBG
  145.       DrawBox 1 1 ScreenWidth 3
  146.       GotoXY(ScreenWidth - Length(MenuTitle) - 3,1)
  147.       Write MenuTitle
  148.  
  149.       ;------ Display the clock
  150.  
  151.       ClockColor ClockColorFG TitleBoxBG
  152.       ClockPos 3 2
  153.  
  154.       ;------ Setup Console
  155.  
  156.       ConsolePos 42 5
  157.       ConsoleHeaderColor MenuInverseFG MenuInverseBG
  158.       ConsoleInsideColor ConsoleInsideFG MenuBG
  159.  
  160.    endif
  161.    HeightDifference = 4
  162. EndProc
  163.  
  164.  
  165. Procedure MakeBox(Header,Col,Row,Center)
  166. var Height Width Cnt
  167.  
  168.    Width = Length(Header) - 1
  169.  
  170.      ;Get the widest element in the Choices Array
  171.  
  172.    if Length(Choices[1]) > 0
  173.       Cnt = 65
  174.       loop Choices
  175.          Trim(LoopVal)
  176.          if left(LoopVal,1) <> '─'
  177.             LoopVal = " " + Char(Cnt) + ". " + LoopVal
  178.             Cnt = Cnt + 1
  179.          endif
  180.          Width = Max(Width,Length(LoopVal))
  181.       endloop
  182.    else
  183.       Width = ScreenWidth - 7
  184.    endif
  185.    Height = NumberOfElements(Choices) + 2
  186.    if Header > '' then Height = NumberOfElements(Choices) + HeightDifference
  187.    Width = Width + 5
  188.    if Center
  189.       if Row = 0
  190.  
  191.          ;Center window verticaly
  192.  
  193.          Row = ((ScreenHeight - Height) / 2) + 2
  194.       else
  195.  
  196.          ;Center window with X Coordinate
  197.  
  198.          Row = (Row - (Height / 2) + 1)
  199.       endif
  200.       if Col = 0
  201.  
  202.          ;Center window horizonitly
  203.  
  204.          Col = (ScreenWidth - Width) / 2 + 1
  205.       else
  206.  
  207.          ;Center window with Y Coordinate
  208.  
  209.          Col = (Col - (Width / 2) + 1)
  210.       endif
  211.    endif
  212.  
  213.    ;Make Sure Row and Col are within their range
  214.  
  215.    Row = Max(Row,5)
  216.    Row = Min(Row,ScreenHeight - Height - 1)
  217.    Col = Max(Col,2)
  218.    Col = Min(Col,ScreenWidth - Width)
  219.  
  220.    DrawTheBox(Col,Row,Width,Height,Header)
  221.  
  222.      ;Write the menu choices
  223.  
  224.    loop Choices
  225.       if left(LoopVal,1) = '─'
  226.          TextColor MenuVertLinesFG MenuBG
  227.          ClearLine 196
  228.          TextColor MenuInsideFG MenuBG
  229.          CapsColor(MenuCapColorFG,MenuBG)
  230.          Writeln
  231.       else
  232.          if LoopIndex = LoopLimit then Write(LoopVal) else Writeln(LoopVal)
  233.       endif
  234.    endloop
  235.  
  236.    UseArrows On
  237.    Dispose(Choices)
  238. EndProc
  239.  
  240. ;------ Draw the Box
  241.  
  242. Procedure DrawTheBox (Col,Row,Width,Height,Header)
  243.  
  244.      ;Draw the main window
  245.  
  246.    DoubleLineBox
  247.    InactiveBox SingleLineBox
  248.    InactiveBoxColor MenuInactiveFG MenuBG
  249.    BoxInsideColor MenuInsideFG MenuBG
  250.    BoxBorderColor MenuBorderFG MenuBG
  251.    DrawBox(Col,Row,Width,Height)
  252.  
  253.    if Header > ''
  254.  
  255.      ;Write the header
  256.  
  257.       TextColor(MenuHeaderFG,MenuBG)
  258.       WriteCenter(Header)
  259.  
  260.      ;Write the vertical lines
  261.  
  262.       TextColor(MenuVertLinesFG,MenuBG)
  263.       Writeln
  264.       ClearLine 196
  265.       GotoXY 2 2
  266.       WriteVertical mid(VertLine,1,Height - 3)
  267.  
  268.      ;Draw the menu text box
  269.  
  270.       CapsColor(MenuCapColorFG,MenuBG)
  271.       InverseColor(MenuInverseFG,MenuInverseBG)
  272.       Window(Col + 3, Row + 3, Width - 4, Height - HeightDifference)
  273.    else
  274.       CapsColor Black Black
  275.    endif
  276. EndProc
  277.  
  278.  
  279.